package page

import (
	"blog/model"
	"blog/service/data"

	"github.com/gin-gonic/gin"
)

type AdminUserPageService struct {
	adminUserDataService *data.AdminUserDataService
}

func NewAdminUserPageService() *AdminUserPageService {
	return &AdminUserPageService{
		adminUserDataService: &data.AdminUserDataService{},
	}
}

// CheckLogin 检查管理员登录（页面逻辑）
func (s *AdminUserPageService) CheckLogin(ctx *gin.Context, userName, userPass string) (*model.AdminUser, error) {
	// 页面层处理：数据验证等
	if userName == "" || userPass == "" {
		return nil, model.ERR_NO_LOGIN
	}

	// 调用数据层
	return s.adminUserDataService.CheckLogin(ctx, userName, userPass)
}

// GetAdminUserByID 根据ID获取管理员用户（页面逻辑）
func (s *AdminUserPageService) GetAdminUserByID(ctx *gin.Context, id int64) (*model.AdminUser, error) {
	// 页面层处理：权限验证等
	// 这里可以添加权限检查逻辑

	// 调用数据层
	return s.adminUserDataService.GetAdminUserByID(ctx, id)
}

// CreateAdminUser 创建管理员用户（页面逻辑）
func (s *AdminUserPageService) CreateAdminUser(ctx *gin.Context, adminUser *model.AdminUser) error {
	// 页面层处理：数据验证等
	if adminUser.Name == "" {
		return model.ERR_NO_LOGIN
	}
	if adminUser.Pass == "" {
		return model.ERR_NO_LOGIN
	}

	// 调用数据层
	return s.adminUserDataService.CreateAdminUser(ctx, adminUser)
}

// UpdateAdminUser 更新管理员用户（页面逻辑）
func (s *AdminUserPageService) UpdateAdminUser(ctx *gin.Context, adminUser *model.AdminUser) error {
	// 页面层处理：数据验证等
	if adminUser.Name == "" {
		return model.ERR_NO_LOGIN
	}

	// 调用数据层
	return s.adminUserDataService.UpdateAdminUser(ctx, adminUser)
}

// DeleteAdminUser 删除管理员用户（页面逻辑）
func (s *AdminUserPageService) DeleteAdminUser(ctx *gin.Context, id int64) error {
	// 页面层处理：权限验证等
	// 这里可以添加权限检查逻辑

	// 调用数据层
	return s.adminUserDataService.DeleteAdminUser(ctx, id)
}

// GetAllAdminUsers 获取所有管理员用户（页面逻辑）
func (s *AdminUserPageService) GetAllAdminUsers(ctx *gin.Context) ([]model.AdminUser, error) {
	// 页面层处理：权限验证等
	// 这里可以添加权限检查逻辑

	// 调用数据层
	return s.adminUserDataService.GetAllAdminUsers(ctx)
}
